package com.exam.mapper;

import java.util.List;
import java.util.Map;

import com.exam.pojo.Question;
import org.apache.ibatis.annotations.Param;

/**
 * @author 蔡小凤
 * 题目类的DAO
 */
public interface QuestionMapper {

	/**
	 * 根据题目ID查找题目
	 *
	 * @param questionId 题目ID
	 * @return 题目实体类
	 */
	Question getQuestionById(Integer questionId);

	/**
	 * 根据分类名称查找题目
	 *
	 * @param typeName 类别名称
	 * @return 题目列表
	 */
	List<Question> getQuestionByTypeName(String typeName);

	/**
	 * 根据分类ID查找题目
	 *
	 * @param typeId 类型id
	 * @return 题目列表
	 */
	List<Question> getQuestionByTypeId(Integer typeId);

	/**
	 * 根据类型以及是什么题型来查找题目
	 *
	 * @param typeId      类型ID
	 * @param subjectName 科目名称
	 * @return 题目列表
	 */
	List<Question> getQuestionBySubjectName(@Param("subjectName") String subjectName, @Param("typeId") Integer typeId);

	/**
	 * 分页时获取相应类型的题目总数
	 *
	 * @param map 封装参数的map
	 * @return 题目总数
	 */
	Integer getTotalCount(Map map);

	/**
	 * 获取分页的题目列表
	 *
	 * @param map 封装参数的map
	 * @return 题目
	 */
	List<Question> getQuestionByPaging(Map map);

	/**
	 *  根据题目的id来删除题目
	 * @param questionId 题目id
	 * @return 影响行数，即成功与否
	 * */
	Integer delQuestionById(Integer questionId);

	/**
	 *  更新题目
	 * @param map 封装参数的map
	 * @return 影响行数，即成功与否
	 * */
	Integer updQuestion(Map map);

	/**
	 *  添加题目
	 * @param map 封装参数的map
	 * @return 影响行数，即成功与否
	 * */
	Integer addQuestion(Map map);

	/**
	 *  恢复题目
	 * @param questionId 题目id
	 * @return 影响行数，即成功与否
	 * */
	Integer recoveryQuestion(Integer questionId);
}
